package com.zjw.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zjw.annotation.domain.entity.Role;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 角色信息表(Role)表数据库访问层
 *
 * @author lkzy
 * @since 2023-12-20 13:38:19
 */
@Mapper
public interface RoleMapper extends BaseMapper<Role> {

    /**
     * 获取当前 用户所拥有生效角色
     *
     * @param id 编号
     * @return {@link List}<{@link Role}>
     */
    @Select("select distinct r.role_key from sys_role r " +
            "left join sys_user_role ur on r.id = ur.role_id " +
            "where ur.user_id = #{id} && r.status = '0'")
    public List<Role> getRolesById(@Param("id") Long id);


    /**
     * 获取当前用户所有角色
     *
     * @param id 编号
     * @return {@link List}<{@link Role}>
     */
    @Select("select distinct * from sys_role r " +
            "left join sys_user_role ur on r.id = ur.role_id " +
            "where ur.user_id = #{id}")
    public List<Role> getAdminRolesById(@Param("id") Long id);


    /**
     * 按 ID 为用户分配角色
     *
     * @param id  编号
     * @param rid 摆脱
     */
    @Insert("insert into sys_user_role(user_id, role_id) values (#{id}, #{rid})")
    void assignRoleToUserById(@Param("id") Long id,@Param("rid") String rid);

    /**
     * 按用户 ID 删除用户角色关系
     *
     * @param id 编号
     */
    @Delete("delete from sys_user_role where user_id = #{id}")
    void removeUserRoleByUserId(@Param("id") Long id);

    /**
     * 按角色 ID 删除用户角色关系
     *
     * @param id 编号
     */
    @Delete("delete from sys_user_role where role_id = #{id}")
    void removeUserRoleByRoleId(@Param("id") Long id);

}
